name: build

on:
#  push:
#    branches: ['main']
#  pull_request:
#    branches: ['main']
# 触发条件：当有代码推送到main分支或者有针对main分支的合并请求时，这个工作流会被触发。
  workflow_dispatch: # 手动触发
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true
# 并发控制：
# group：定义了并发组的名称，这里使用了工作流名称和分支名称或PR编号。
# cancel-in-progress：如果新的构建开始，将会取消正在进行中的构建。
jobs:
  build:
    # 作业：定义了一个名为build的作业。
    strategy:
      matrix:
        platform: [ubuntu-latest]
        go-version: ['1.21']
    # 策略：定义了构建策略，这里使用了矩阵策略，指定了在ubuntu-latest平台上使用Go语言版本1.21。
    name: Build
    runs-on: ${{ matrix.platform }}
    steps:
      # 步骤：定义了作业中需要执行的步骤。
      - uses: actions/checkout@v4
       # 检出代码：使用actions/checkout@v4动作来检出代码仓库。
      - name: set up JDK
        uses: actions/setup-java@v3.11.0
        with:
          java-version: '18'
          distribution: 'temurin'
        # 设置JDK：设置Java开发环境，使用actions/setup-java@v3.11.0动作，指定Java版本为18，分发版为temurin。
      - name: Clone project
        run: |
          rm -rf project
          rm -rf jar/custom_spider.jar
          git clone --recurse-submodules https://github.com/dlgt7/FMCatVodSpider project
        # 克隆项目：删除旧的项目目录和Jar文件，然后从指定的GitHub仓库克隆项目代码，包括子模块。
      - name: Customize Spider
        working-directory: ./project
        run: |
          sed -i 's/gradle-7.4.2-all/gradle-7.5-bin/g' gradle/wrapper/gradle-wrapper.properties
          #sed -i 's/原畫/原画/g;s/普畫/普画/g;s/轉存/转存/g;s/極速/极速/g' app/src/main/java/com/github/catvod/spider/Ali.java
          #sed -i 's/原畫/原画/g;s/普畫/普画/g;s/轉存/转存/g;s/極速/极速/g;s/阿里雲盤/阿里云盘/g' app/src/main/java/com/github/catvod/api/AliYun.java
          #curl -L https://github.com/oiltea/CatVodSpider/raw/9ab5cc627be4096db11bca9ee9177c13014ddadd/app/src/main/java/com/github/catvod/spider/Wogg.java > app/src/main/java/com/github/catvod/spider/Wogg.java
          #sed -i 's/thread = 10/thread = 64/g' app/src/main/java/com/github/catvod/api/AliYun.java
        # 自定义爬虫：在项目目录中运行命令，修改Gradle版本，注释掉的行是一些示例，用于修改源代码中的文本。
      - name: Build the app
        working-directory: ./project
        run: |
          chmod +x gradlew
          ./gradlew assemblerelease --build-cache --parallel --daemon --warning-mode all
        # 构建应用：在项目目录中运行命令，使gradlew脚本可执行，并执行Gradle命令来构建应用。
      - name: Customize Spider Jar
        working-directory: ./project
        run: |
          rm -rf jar/custom_spider.jar
          rm -rf jar/spider.jar/original/META-INF
          curl -L https://github.com/iBotPeaches/Apktool/releases/download/v2.7.0/apktool_2.7.0.jar > jar/3rd/apktool_2.7.0.jar
          java -jar jar/3rd/baksmali-2.5.2.jar d app/build/intermediates/dex/release/minifyReleaseWithR8/classes.dex -o jar/Smali_classes
          mkdir -p jar/spider.jar/smali/com/github/catvod/
          mv jar/Smali_classes/com/github/catvod/spider jar/spider.jar/smali/com/github/catvod/
          java -jar jar/3rd/apktool_2.7.0.jar b jar/spider.jar -c
          mv jar/spider.jar/dist/dex.jar ../jar/custom_spider.jar
          md5=($(md5sum ../jar/custom_spider.jar))
          echo $md5 > ../jar/custom_spider.jar.md5
          # 自定义爬虫Jar包：删除旧的Jar文件，下载必要的工具，反编译应用，重打包成Jar文件，并计算其MD5值。
      - name: Upload APK
        uses: actions/upload-artifact@v3.1.2
        with:
          name: Spider
          path: ./jar/custom_spider.jar
       # 上传APK：使用actions/upload-artifact@v3.1.2动作上传构建好的APK文件。
      - name: Update spider jar
        uses: EndBug/add-and-commit@v9.1.3
        with:
          default_author: github_actions
          message: 'update spider jar'
          add: "['./jar/custom_spider.jar', './jar/custom_spider.jar.md5']"
      # 更新爬虫Jar包：使用EndBug/add-and-commit@v9.1.3动作自动提交更新后的Jar包和其MD5值文件。
